// 同步执行 瞬间执行完
// 解释问题  同步代码会跟看到的不一样
// 变量提升
// 背后有个什么机制，执行栈，2个阶段
// 代码的编译阶段 很快的执行完
// 代码的执行阶段 a 已经提前完成了声明，变量提升
// java c javac a.java 编译（错误，变量的声明） .class 运行 .class
// js 中变量 独立存在的，变量类型由值决定，在特定的作用域下声明
// 作用域优先于变量存在的  全局作用域 在执行栈中执行时
// 变量提升  
// lhs rhs
// 在js中要使用变量，到相应的作用域找出来 那个它
a = 1;  
var a;  // 声明了 a
console.log(a);  // undefined ? 1